package com.simon.springbootdemo.iot.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 设备对象 iot_device
 *
 * @author xie
 * @date 2024-04-07
 */
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class IotDevice extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 设备ID
     */
    private Long deviceId;

    /**
     * 设备唯一的uid
     */
    // @Excel(name = "设备唯一的uid")
    private String deviceUuid;

    /**
     * 设备所属类型
     */
    // @Excel(name = "设备所属类型")
    private String deviceCategory;

    /**
     * 设备型号
     */
    // @Excel(name = "设备型号")
    private String deviceModel;

    /**
     * 设备名称
     */
    // @Excel(name = "设备名称")
    private String deviceName;

    /**
     * 经度
     */
    // @Excel(name = "经度")
    private String deviceLon;

    /**
     * 纬度
     */
    // @Excel(name = "纬度")
    private String deviceLat;

    /**
     * 设备ip
     */
    // @Excel(name = "设备ip")
    private String deviceIp;

    /**
     * 设备端口
     */
    // @Excel(name = "设备端口")
    private Integer devicePort;

    /**
     * 设备状态(online, offline)
     */
    // @Excel(name = "设备状态(online, offline)")
    private String deviceStatus;

    /**
     * 所属会员
     */
    // @Excel(name = "所属会员")
    private Long deviceUserId;

    /**
     * 地址
     */
    // @Excel(name = "地址")
    private String deviceAddress;

    /**
     * 拓展字段
     */
    // @Excel(name = "拓展字段")
    private String deviceExtend;

    /**
     * 账号
     */
    // @Excel(name = "账号")
    private String deviceAccount;

    /**
     * 密码
     */
    // @Excel(name = "密码")
    private String devicePassword;

    /**
     * 设备编号
     */
    // @Excel(name = "设备编号")
    private String deviceSn;

    /**
     * 设备状态切换时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    // @Excel(name = "设备状态切换时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deviceSwitchTime;


    private List<IotPoint> points = new ArrayList<>();

    //是否初始化属性
    private boolean initAttr;

    /**
     * 采集点位个数
     */
    private int collectionPointsNumber;

    /**
     * 总点位个数
     */
    private int totalPointsNumber;

}
